<?php

/**
 * \file
 * Classe pour la gestion de memcache.
 */

namespace pilar\MemcacheManager /* \cond */ ; /* \endcond */
{

/**
 * Gestionnaire de memcache.
 *
 * \since 30/06/2009
 * \author Dirk Marski <dirk.marski@gmail.com>
 */
class MemcacheManager extends \pilar\Configurables\Configurable {


/**
 * Stocke la connexion avec memcache.
 */
private $_memcache = null;


public function _configure() {
 parent::_configure();

 $this->defineParams(array(
  'serverHost' => 'localhost',
 	'serverPort' => 11211;
 ));
}


/**
 * Etabli la connexion avec le daemon memcache.
 *
 * \since 30/06/2009
 */
public function connect() {
	$this->_memcache = new Memcache;
	$this->_memcache->connect($this->param('serverHost'), 
		$this->param('serverPort')) or trigger_error(
  	"Impossible de se connecter au serveur",
  	E_USER_ERROR
 	);
 if (PILAR_MEMCACHE_DEBUG_ENABLED) {
 	memcache_debug();
 }
}


/**
 * Enregistre une valeur sur le serveur memcache.
 * 
 * \param $key Clefs de la valeur stocké sur le serveur.
 * \param $var Variable à stocker sur le serveur.
 * \param $expire Temps en secondes d'expiration de la valeur.
 * \param $flag Compression des données.
 * \since 30/06/2009
 */
public function storeVar($key, $var, $expire = 0, $flag = 'MEMCACHE_COMPRESSED') {
	$this->_memcache->set($key, $var, $flag, $expire)
}


/**
 * Mise à jour d'un objet sur le serveur memcache.
 * 
 * \param $key Clefs de la valeur stocké sur le serveur.
 * \param $var Variable à stocker sur le serveur.
 * \param $expire Temps en secondes d'expiration de la valeur.
 * \param $flag Compression des données.
 * \return \c FALSE si la valeur existe déjà, \c TRUE sinon
 * \since 30/06/2009
 */
public function updateVar($key, $var, $expire = 0, $flag = 'MEMCACHE_COMPRESSED') {
	return $this->_memcache($key, $var, $flag, $expire);
}


/**
 * Efface une valeur.
 *
 * \param $key Clef de la valeur.
 * \since 01/07/2009
 */
public function deleteVar($key) {
	$this->_memcache->delete($key);
}


/**
 * Ferme la connexion avec le deamon memcache.
 * 
 * \since 01/07/2009
 */
public function close() {
	$this->_memcache->close();
}


/**
 * Récupère des statistiques des connexions memcache.
 * 
 * \return Array avec les valeurs de statistiques.
 */
public function getStats() {
	return $this->_memcache->getStats();
}


} // Class.

} // Namespace
